var express = require('express');
var router = express.Router();
var sql = require('./../sql');
var Pro = require('./../sql/col/products');
/**
 * @api {get} api/category/getCategory 获取分类
 * @apiDescription 获取分类
 * @apiGroup 分类接口
 * @apiSuccessExample { json } Success-Response:
 * res.send({
      code: '200',
      message: '获取分类',
      data
    });
 * @apiSampleRequest /api/category/getCategory
 * @apiVersion 1.0.0
 */
router.get('/getCategory', function(req, res, next) {
  // 1.查询产品的数据库，检索出所有的产品的分类，然后去重（---只适用于我们现在的项目----真实项目中可能有专门的分类数据库
  sql.distinct(Pro, 'type').then(data => {
    res.send({
      code: '200',
      message: '获取分类',
      data
    });
  })
});


/**
 * @api {get} api/category/getCategoryTypeList 获取品牌分类数据
 * @apiDescription 获取品牌分类数据
 * @apiGroup 分类接口
 * @apiParam { string } type 分类
 * @apiParam { Number } limit 
 * @apiSuccessExample { json } Success-Response:
 * res.send({
      code: '200',
      message: '获取分类数据',
      len:data.length,
      data: data
    });
 * @apiSampleRequest /api/category/getCategoryTypeList
 * @apiVersion 1.0.0
 */
router.get('/getCategoryTypeList', function(req, res, next) {
  const { type } = req.query
  let limit=req.query.limit*1 || 10
  sql.paging(Pro,{ type },{_id:0},limit).then((data)=>{
    res.send({
        code: '200',
        message: '获取分类数据',
        len:data.length,
        data: data
    })
  })
});



/**
 * @api {get} api/category/getCategoryProduct 获取分类下的产品数据
 * @apiDescription 获取分类下的产品数据
 * @apiGroup 分类接口
 * @apiParam { string } type 分类
 * @apiSuccessExample { json } Success-Response:
 * res.send({
      code: '200',
      message: '获取分类下的产品数据',
      data
    });
 * @apiSampleRequest /api/category/getCategoryProduct
 * @apiVersion 1.0.0
 */
router.get('/getCategoryProduct', function(req, res, next) {
  // 1.接收分类的数据，依据分类查询数据，确定显示的字段
  const { type } = req.query
  // 2.查询分类类型为type的数据
  sql.find(Pro, { type }, { _id: 0 }).then(data => {
    res.send({
      code: '200', 
      message: '获取分类下的产品数据',
      data
    })
  })
});

module.exports = router;
